package juc

import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock

fun main() = runBlocking {
    var count = 0
    val mutex = Mutex() // 协程锁

    // 启动10个协程并发修改count
    repeat(12) {
        launch(Dispatchers.Default) {
            repeat(1000) {
                // withLock 自动获取锁并释放（类似synchronized）
                mutex.withLock {
                    count++
                }
            }
        }
    }

    delay(1000) // 等待所有协程完成
    println("最终count值：$count") // 预期10000（无并发问题）
}